package com.wonders.hisdoctor.station.project.vaccine.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.wonders.his.common.utils.validator.group.InsertGroup;
import com.wonders.his.common.utils.validator.group.PrimaryGroup;
import java.math.BigDecimal;
import java.util.Date;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;

/**
 * <p>疫苗库存表</p>
 * <p>db_table: VACCINE_STOCK</p>
 * @author zhanghaonan
 * @date 2021/06/25
 */
@ApiModel("疫苗库存表")
@Accessors(chain = true)
@Data
@ToString
@TableName("VACCINE_STOCK")
public class VaccineStock implements Serializable {

    private static final long serialVersionUID = 1924128801726188154L;

    /** `主键` db_field: VACCINE_STOCK_ID; desc: 疫苗库存ID */
    @ApiModelProperty("疫苗库存ID")
    @TableId
    @NotBlank(message = "疫苗库存ID不能为空", groups = PrimaryGroup.class)
    @TableField("VACCINE_STOCK_ID")
    private String vaccineStockId;

    /** db_field: VACCINE_CODE; desc: 疫苗代码 */
    @ApiModelProperty("疫苗代码")
    @TableField("VACCINE_CODE")
    @NotBlank(message = "疫苗代码不能为空", groups = InsertGroup.class)
    private String vaccineCode;

    /** db_field: FIRM_ID; desc: 产地：对应表drug_supplier_catalog中是生成商数据 */
    @ApiModelProperty("产地：对应表drug_supplier_catalog中是生成商数据")
    @TableField("FIRM_ID")
    private String firmId;

    /** db_field: BATCH_NO; desc: 批号 */
    @ApiModelProperty("批号")
    @TableField("BATCH_NO")
    private String batchNo;

    /** db_field: EXPIRE_DATE; desc: 有效期：药品的有效截止日期 */
    @ApiModelProperty("有效期：药品的有效截止日期")
    @TableField("EXPIRE_DATE")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date expireDate;

    /** db_field: QUANTITY; desc: 数量：以包装规格及包装单位所计的现库存数量，每次出库，该数量核减 */
    @ApiModelProperty("数量：以包装规格及包装单位所计的现库存数量，每次出库，该数量核减")
    @TableField("QUANTITY")
    private BigDecimal quantity;

    /** db_field: PACKAGE_UNITS; desc: 包装单位：对应包装规格的计量单位，可使用任一级管理上方便的包装 */
    @ApiModelProperty("包装单位：对应包装规格的计量单位，可使用任一级管理上方便的包装")
    @TableField("PACKAGE_UNITS")
    private String packageUnits;

    /** db_field: SUPPLY_INDICATOR; desc: 供应标志：反映该药品当前是否可供使用，0-不可供 1-可供 */
    @ApiModelProperty("供应标志：反映该药品当前是否可供使用，0-不可供 1-可供")
    @TableField("SUPPLY_INDICATOR")
    private Integer supplyIndicator;

    /** db_field: CREATE_TIME; desc: 创建时间 */
    @ApiModelProperty("创建时间")
    @TableField("CREATE_TIME")
    private Date createTime;

    /** db_field: CREATE_ID; desc: 创建人ID */
    @ApiModelProperty("创建人ID")
    @TableField("CREATE_ID")
    private String createId;

    /** db_field: CREATE_NAME; desc: 创建人名称 */
    @ApiModelProperty("创建人名称")
    @TableField("CREATE_NAME")
    private String createName;

    /** db_field: UPDATE_TIME; desc: 修改时间 */
    @ApiModelProperty("修改时间")
    @TableField("UPDATE_TIME")
    private Date updateTime;

    /** db_field: UPDATE_ID; desc: 修改人ID */
    @ApiModelProperty("修改人ID")
    @TableField("UPDATE_ID")
    private String updateId;

    /** db_field: HOSPITAL_CODE; desc: 医院代码 */
    @ApiModelProperty("医院代码")
    @TableField("HOSPITAL_CODE")
    private String hospitalCode;

    @ApiModelProperty("备注")
    @TableField("MENO")
    private String meno;
}